import java.util.HashSet;
/*
141. 环形链表
 */
public class LeeCode141 {

  public static void main(String[] args) {

  }

//  快慢指针
  public boolean hasCycle1(ListNode head) {
    if (head == null || head.next == null){
      return false;
    }
    ListNode slow = head;
    ListNode fast = head.next;
    while (slow != fast){
      if (fast == null || fast.next == null){
        return false;
      }
      slow = slow.next;
      fast = fast.next.next;
    }
    return true;
  }
//  哈希法
  public boolean hasCycle2(ListNode head) {
    HashSet<ListNode> set = new HashSet<>();
    while (head != null){
      if (!set.add(head)){
        return true;
      }
      head = head.next;
    }
    return false;
  }
}

